package com.hylanda.processors.HNGetSnapShot.util;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;



public class HttpUtil {
	
	 public static String send(String url, Map<String,String> map,String encoding) throws ParseException, IOException{  
	        String body = "";  
	  
	        //创建httpclient对象  
	        CloseableHttpClient client = HttpClients.createDefault(); 
	        
	        RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(20000).setConnectTimeout(2000).build();//设置请求和传输超时时间
	        //创建post方式请求对象  
	        HttpPost httpPost = new HttpPost(url);
	        httpPost.setConfig(requestConfig);
	          
	        //装填参数  
	        List<NameValuePair> nvps = new ArrayList<NameValuePair>();  
	        if(map!=null){  
	            for (Entry<String, String> entry : map.entrySet()) {  
	                nvps.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));  
	            }  
	        }  
	        //设置参数到请求对象中  
	        httpPost.setEntity(new UrlEncodedFormEntity(nvps, encoding));  
	  
	        //System.out.println("请求地址："+url);  
	        //System.out.println("请求参数："+nvps.toString());  
	          
	        //设置header信息  
	        //指定报文头【Content-type】、【User-Agent】  
	        httpPost.setHeader("Content-type", "application/x-www-form-urlencoded");  
	        httpPost.setHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");  
	          
	        //执行请求操作，并拿到结果（同步阻塞）  
	        CloseableHttpResponse response = client.execute(httpPost);  
	        //获取结果实体  
	        HttpEntity entity = response.getEntity();  
	        if (entity != null) {  
	            //按指定编码转换结果实体为String类型  
	            body = EntityUtils.toString(entity, encoding);  
	        }  
	        EntityUtils.consume(entity);  
	        //释放链接  
	        response.close();  
	        return body;  
	    }
	
	public static void main(String[] args) throws ParseException, IOException {
		
		
		Map<String, String> map = new HashMap<>();
		map.put("appkey", "6044344985872289337");
		map.put("v", "2.0");
		map.put("format", "json");
		map.put("query", "{ \"url\" :\"http://news.k618.cn/roll/201806/t20180606_16130609.html\",\"type\":1,\"check\": \"0\"}");
		
		String url = "http://api.reidx.com/rest/ium/query_orig";
		String body = send(url, map, "UTF-8");
		System.out.println(body);
		
	}
}
